package algo3c3g3.model.persistence;

import java.io.*;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

public class Persistence
{
    /**
     * Genera un archivio XML a partir de un Element.
     * @param root Element con datos para grabar.
     * @param filePath Ruta del archivo XML.
     */
    public static void toXMLFile(Element root, String filePath)
    {
        try
        {
            Document d = new Document();
            d.setContent(root);
            XMLOutputter out = new XMLOutputter(Format.getPrettyFormat());
            FileOutputStream fos;
            fos = new FileOutputStream(filePath);
            out.output(d, fos);
            fos.flush();
            fos.close();
        }
        catch (FileNotFoundException e)
        {
            e.printStackTrace();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
    
    /**
     * Genera un element a partir de un archivo XML.
     * Este metodo no sebe ser usado ya que tiene problemas para
     * generar URLs a partir del string que recibe, y no puede
     * cargar los archivos.
     */
    public static Element getRootFromXMLFile(String filePath)
    {
        Element root = null;
        SAXBuilder builder = new SAXBuilder(false);

        try
        {
            root = builder.build(filePath).getRootElement();
        }
        catch (JDOMException e)
        {
            e.printStackTrace();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        return root;
    }
    
    /**
     * Genera un Element a partir de un archivo XML.
     * @param file Archivo XML.
     * @return Element
     * @throws org.jdom.JDOMException
     * @throws java.io.IOException
     */
    public static Element getFromXML(File file) throws JDOMException,
                                                       IOException
    {
        Element root = null;
        SAXBuilder builder = new SAXBuilder(false);
        
        java.net.URL filePath = null;
        
        filePath = file.toURI().toURL();
        
        root = builder.build(filePath).getRootElement();

        return root;
    }
}
